perm filename WIX2SB.FAI[VIS,HPM]2 blob
sn#144765 filedate 1975-02-10 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE WIX2SB
C00007 ENDMK
C⊗;
TITLE WIX2SB
;FULLY FORMAT 2 ORIENTED PICTURE ROUTINES. EXTENSIONS TO THE CONVERTED
;FORMAT 1 ROUTINES IN WIXSUB
ENTRY HAFPIC,COPPIC
PCLN←←0
PCWD←←1
PCBY←←2
PCBYA←←3
LNWD←←4
LNBY←←5
LNBYA←←6
WDBY←←7
WDBI←←10
BYBI←←11
BPTAB←←12
LINTAB←←13
T←1 ↔ TT←2 ↔ TTT←3 ↔ ARRY1←4 ↔ ARRY2←5 ↔ P←17
A←6 ↔ B←7 ↔ C←10 ↔ D←11 ↔ E←13 ↔ F←14 ↔ G←15
RETAD: 0
AR2TAB: MOVEI T,44 ;TOTAL BITS/WORD
IDIV T,BYBI(ARRY2) ;BYTE SIZE
MOVEM T,WDBY(ARRY2) ;BYTES PER WORD
SUBI TT,44 ;-NUMBER OF USED BITS/WORD
MOVNM TT,WDBI(ARRY2) ;SAVED
ADD T,LNBY(ARRY2)
SUBI T,1
IDIV T,WDBY(ARRY2) ;NUMBER OF WORDS/SCANLINE
MOVEM T,LNWD(ARRY2)
MOVE TT,T ;WORDS/LINE
IMUL TT,WDBY(ARRY2) ;BYTES/WORD
MOVEM TT,LNBYA(ARRY2) ;GIVES BYTES/LINE, INCLUDING NULLS
IMUL TT,PCLN(ARRY2)
MOVEM TT,PCBYA(ARRY2) ;TOTAL BYTES/PIC, INCL. NULLS
IMUL T,PCLN(ARRY2) ;LINES IN THE PICTURE
MOVEM T,PCWD(ARRY2) ;WORDS IN THE PICTURE
MOVE T,LNBY(ARRY2)
IMUL T,PCLN(ARRY2)
MOVEM T,PCBY(ARRY2) ;BYTES/PIC, NOT INCL. NULLS
MOVEI T,14(ARRY2)
ADD T,PCLN(ARRY2)
MOVEM T,BPTAB(ARRY2) ;ADDRESS OF BYTE POINTER TABLE
ADD T,LNBYA(ARRY2) ;ADDR OF FIRST WORD IN PICTURE
MOVN TT,PCLN(ARRY2) ;SET UP CNTR FOR LINE ADDRESSES
HRL TT,TT
HRRI TT,LINTAB(ARRY2)
LTLP: MOVEM T,(TT) ;MAKE LINE TABLE
ADD T,LNWD(ARRY2)
AOBJN TT,LTLP
MOVN TT,BPTAB(ARRY2)
HRL TT,LNBYA(ARRY2) ;SET UP CNTR FOR BYTE TABLE
AOBJN TT, ;DECR ADDRESS AND INCR COUNT BY 1
MOVN TT,TT
MOVEI T,4400
ADD T,BYBI(ARRY2)
LSH T,6
HRLZ T,T
BYLP: MOVEM T,(TT) ;MAKE BYTE POINTER TABLE
IBP T
AOBJN TT,BYLP
POPJ P,
HAFPIC: POP P,RETAD
POP P,ARRY2 ;MAKES A HALFSIZE VERSION
POP P,ARRY1 ;OF A PICTURE
MOVE T,LNBY(ARRY1) ;HAFPIC(PICIN,PICOUT);
ASH T,-1 ;NEW PIC IS HALF THE WIDTH
MOVEM T,LNBY(ARRY2)
MOVE T,PCLN(ARRY1)
ASH T,-1 ;AND HALF THE HEIGHT
MOVEM T,PCLN(ARRY2)
MOVE T,BYBI(ARRY1)
ADDI T,2 ;AND HAS TWO MORE BITS/PIXEL
MOVEM T,BYBI(ARRY2)
PUSHJ P,AR2TAB ;SET UP ITS SKELETON
MOVE A,BPTAB(ARRY1)
MOVE A,-1(A) ;FIRST BYTE PNTR FOR ARRY1
ADD A,LINTAB(ARRY1)
MOVE B,BPTAB(ARRY2)
MOVE B,-1(B) ;AND FIRST BP FOR ARRY2
ADD B,LINTAB(ARRY2)
MOVE F,PCLN(ARRY2) ;NO OF LINES, FOR COUNT
LNLP: MOVE TTT,LNBY(ARRY2) ;NO OF BYTES, INNER LOOP CNTR
MOVE C,A
ADD A,LNWD(ARRY1) ;BP S FOR ARRY1
MOVE D,A
ADD A,LNWD(ARRY1)
MOVE E,B ;BP FOR ARRY2
ADD B,LNWD(ARRY2)
CLLP: ILDB T,C ;FETCH FOUR BYTES AND ADD THEM
ILDB TT,C
ADD T,TT
ILDB TT,D
ADD T,TT
ILDB TT,D
ADD T,TT
IDPB T,E ;THEN DEPOSIT SUM
SOJG TTT,CLLP
SOJG F,LNLP
JRST @RETAD
COPPIC: POP P,RETAD ;COPIES A PICTURE IN PIC1
POP P,ARRY2 ;INTO PIC2 (THE LINE TABLE MUST
POP P,ARRY1 ;BE ADJUSTED TO DO THIS)
HRLZ T,ARRY1 ; COPPIC(PIC1,PIC2)
HRR T,ARRY2
MOVEI TT,13(ARRY2)
ADD TT,PCLN(ARRY1)
ADD TT,LNBYA(ARRY1)
ADD TT,PCWD(ARRY1)
BLT T,(TT)
MOVE T,ARRY2
SUB T,ARRY1
MOVN TT,PCLN(ARRY1)
SUBI TT,1
HRLZ TT,TT
HRRI TT,BPTAB(ARRY2)
COPLP: ADDM T,(TT)
AOBJN TT,COPLP
JRST @RETAD
END